<?php
class MarcasController extends AppController {

	var $name = 'Marcas';
	var $appModule = 'Maestros';
	
	var $helpers = array('Html','Form','Javascript','GetList');
	var $paginate = array('order'=>array('Marca.codigo'=>'asc'));

	function index($q=null){
		//definición de condiciones estándares
		$conditions['Marca.activo'] = true;
		
		//verificando si se hizo busqueda por formulario
         $q = $this->getBusqueda($this->data['Marca']['busqueda']);
		
		//armando condiciones si q tiene valor
		if(!empty($q)){
			$conditions['OR'] = array(
				'Marca.descripcion SIMILAR TO' => "%$q%",
				'Marca.codigo'=>$q,
			);
		}	
		//ejecutando query
		$this->Marca->unbindModel(array('hasMany' => array('Modelo', 'Vehiculo')),false);
		$marcas = $this->paginate($conditions);
		
		//estableciendo valores para vista
		if(!empty($this->params['url']['limite'])){
			$this->limite = $this->params['url']['limite'];
		}
		$this->data['Marca']['pagesize'] = $this->paginate['limite'] = $this->limite;
		$this->data['Marca']['busqueda'] = str_replace('|',';',$q);
		$this->set('q',$q);	
        
		$this->set('marcas',$marcas);
		$this->set('limite',$this->limite);
	}

	function add($tipoMarca=null) {
		if(empty($tipoMarca)){
			$condicion=array();
		} else {
			$condicion=array('TipoMarca.id'=>$tipoMarca);
		}		
							 
		if (!empty($this->data)) {
			//agregando información que fue obviada
			$this->data['Marca']['activo']=1;
			$this->data['Marca']['usuario_creacion_id']=$this->_usuario['id'];
			$this->data['Marca']['fecha_creacion']='now()';


			$this->Marca->create();
			if ($this->Marca->save($this->data)) {
				$this->Session->setFlash('se guardó correctamente');    
				$this->redirect(array('action'=>'index'),null,true);
			} else {
				$this->Session->setFlash('error al intentar guardar');
			}
		} else {
			$this->data['Marca']['codigo'] = $this->Marca->get_nuevo_codigo();			
		}
	}

	function edit($id=null){
		if (!$id && empty($this->data)) {
			$this->flash(__('Error de datos o no existe el registro', true), array('action'=>'index'));
		}
		if (!empty($this->data)) {
			$this->data['Marca']['usuario_modificacion_id']=$this->_usuario['id'];
			$this->data['Marca']['fecha_modificacion']='now()';

			if ($this->Marca->save($this->data)) {
				$this->Session->setFlash('se guardó correctamente');
				$this->redirect(array('action'=>'index'),null,true);
			} else {
				$this->Session->setFlash('error al intentar guardar');
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Marca->read(null, $id);			
		}
	}

	function delete($id = null, $verbose = true){
		$this->autoRender = false;
		if (empty($id)) {
			$this->Session->setFlash('el registro no existe o fue eliminado');
			$this->redirect(array('action'=>'index'));
		}
                $this->data['Marca']['id']=$id;
		$this->data['Marca']['activo']=0;
		$this->data['Marca']['usuario_borrado_id']=$this->_usuario['id'];
		$this->data['Marca']['fecha_borrado']='now()';
		if ($this->Marca->save($this->data)){
                    $mensaje = 'Los registros fueron eliminados correctamente';
		} else {
                    $mensaje = 'Hubo un error al intentar borrar algunos registros';
		}		
		$this->Session->setFlash($mensaje);
                if ($verbose)
                    $this->redirect(array('action'=>'index'));
	}

    function process(){
    	$res = false;
       	foreach($this->data as $data){
        	if (!isset($data['id']) ||
            	$data['id']==0 ||empty($data['id']))
                    continue;
                $res = $this->delete($data['Marca']['id'], false);
                if (!$res) break;
            }
            $this->redirect(array('action'=>'index'));
        }
        
	public function buscar($q = null){
		if(!empty($this->data['Marca']['q'])){
			$q = $this->data['Marca']['q'];
		} elseif (!empty($this->params['url']['q'])){
			$q = $this->params['url']['q'];
		} elseif (!empty($this->params['form']['q'])){
			$q = $this->params['form']['q'];
		}
				
		if(empty($q)){
			$result = array('Error'=>'No se establecieron los parámetros adecuadamente');
		} else {
			$conditions = array('Marca.activo' => true);	
			$params = explode('_ID_', $q);			
			if( count($params) == 2){
				$conditions['Marca.id'] = $params[1];
			} else {
				$conditions['Marca.descripcion iLike']='%'.strtoupper($q).'%';
			}							
						
			$fields = array(
				'Marca.id',					
				'Marca.codigo',
				'Marca.descripcion' );
			
			$this->Marca->Behaviors->attach('Containable');
			$result = $this->Marca->find('all', array(
				'conditions' => $conditions,
				'recursive'=>-1,
				'fields' => $fields,
				'order'=>array('Marca.descripcion ASC')));
		}		
		//definiendo valores en caso q sea una petici�n para autocompletado
		if(!empty($this->params['url']['autocomplete']) || !empty($this->params['form']['autocomplete'])){
			$res = array();
			foreach($result as $value){
				$res[] = array('value'=>'_ID_'.$value['Marca']['id'], 'display'=>'<span style="color:gray;font-size:.9em">'.$value['Marca']['codigo'].'</span><div style="float:right;font-size:.8em" title="'.$value['Marca']['descripcion'].'">'. $this->neat_trim($value['Marca']['descripcion'], 24) .'</div>');
			}
			$result = $res;
		}
	
		if ($this->RequestHandler->isAjax()){
			/*
			if(empty($result)){
				$result = array('error'=>'No se encontraron datos');
			}*/
			$this->_ajaxify($result);
		} else {
			return $result;
		}
	}

}
?>